package pe.gob.pj.sri.web.action.coordesa;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
import org.richfaces.component.html.HtmlDataTable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import pe.gob.pj.sri.bean.Ticket;
import pe.gob.pj.sri.bean.Usuario;
import pe.gob.pj.sri.servicio.TicketService;
import pe.gob.pj.sri.servicio.UsuarioService;
import pe.gob.pj.sri.web.util.Constantes;

@Scope("session")
@Controller("asignacionTicketAction")
public class AsignacionTicketAction {
	@Autowired
    private static final Logger LOGGER = Logger.getLogger(AsignacionTicketAction.class);
	@Autowired
	private Usuario analista;
	@Autowired
	private Ticket ticket;
	@Autowired
	private TicketService ticket_service;
	@Autowired
	private UsuarioService usuario_service;
	
	private Usuario dataItem;
	private List<Ticket> lista_tickets_no_asignados;
	private List<Usuario> lista_analistas;
	private HtmlDataTable radioDataTableTickets;
	private HtmlDataTable radioDataTableAnalistas;
	private Usuario analistaItem; 
	private Ticket ticketItem;
	private List<Usuario> lista_analistas_seleccionados;
	
	// recuperamos de la bd
	public void obtener_listas_tickets_no_asignados(){
		this.lista_tickets_no_asignados = this.ticket_service.listarTicketNoAsignados();
	}
	
	public void recuperar_usuarios(){
		try {
			lista_analistas.clear();
			lista_analistas = usuario_service.listarAanalistas("car3");
			
		} catch (Exception e) {
			System.out.println("Error");
			e.printStackTrace();
		}
		
	}
	
	// iniciar 
	public String getIniciarAsignarTicket(){
		
		recuperar_usuarios();
		obtener_listas_tickets_no_asignados();
		
		return Constantes.VACIO;
		
	}
	
	public void establecerElementoSeleccionadoTicket(){
		System.out.print("establecerElementoSeleccionado Tickets: ");
		this.ticketItem=null;
		this.ticketItem = (Ticket)this.radioDataTableTickets.getRowData();
		System.out.println("Ticket seleccionado: "+ticketItem.getIdTicket());
	}
	
	public void establecerElementoSeleccionado(){
		try{
			System.out.print("establecerElementoSeleccionado Analistas: ");
			dataItem = null;
			
			dataItem = (Usuario)radioDataTableAnalistas.getRowData();
			
			int i=0;
			if((i=this.lista_analistas_seleccionados.indexOf(dataItem))!=-1){
				this.lista_analistas_seleccionados.remove(i);
				System.out.println(dataItem.getApellidoPaterno()+" existe, se quita de la lista");
			}else{
				this.lista_analistas_seleccionados.add(dataItem);
				System.out.println(dataItem.getApellidoPaterno()+", se agregó");
			}
		}catch(Exception e){
			LOGGER.error("Error =>");
		}
	}
	
	public String registrar(){
		return "";
	}
	
	// constructor
	public AsignacionTicketAction() {
		this.lista_analistas = new ArrayList<Usuario>();
		this.lista_analistas_seleccionados = new ArrayList<Usuario>();
		this.lista_tickets_no_asignados = new ArrayList<Ticket>();
	}
	
	// getters and setters
	public Usuario getAnalista() {
		return analista;
	}
	public void setAnalista(Usuario analista) {
		this.analista = analista;
	}
	public Ticket getTicket() {
		return ticket;
	}
	public void setTicket(Ticket ticket) {
		this.ticket = ticket;
	}
	public TicketService getTicket_service() {
		return ticket_service;
	}
	public void setTicket_service(TicketService ticket_service) {
		this.ticket_service = ticket_service;
	}
	public UsuarioService getUsuario_service() {
		return usuario_service;
	}
	public void setUsuario_service(UsuarioService usuario_service) {
		this.usuario_service = usuario_service;
	}
	public List<Ticket> getLista_tickets_no_asignados() {
		return lista_tickets_no_asignados;
	}
	public void setLista_tickets_no_asignados(
			List<Ticket> lista_tickets_no_asignados) {
		this.lista_tickets_no_asignados = lista_tickets_no_asignados;
	}
	public List<Usuario> getLista_analistas() {
		return lista_analistas;
	}
	public void setLista_analistas(List<Usuario> lista_analistas) {
		this.lista_analistas = lista_analistas;
	}
	public HtmlDataTable getRadioDataTableTickets() {
		return radioDataTableTickets;
	}
	public void setRadioDataTableTickets(HtmlDataTable radioDataTableTickets) {
		this.radioDataTableTickets = radioDataTableTickets;
	}
	public HtmlDataTable getRadioDataTableAnalistas() {
		return radioDataTableAnalistas;
	}
	public void setRadioDataTableAnalistas(HtmlDataTable radioDataTableAnalistas) {
		this.radioDataTableAnalistas = radioDataTableAnalistas;
	}
	public Usuario getAnalistaItem() {
		return analistaItem;
	}
	public void setAnalistaItem(Usuario analistaItem) {
		this.analistaItem = analistaItem;
	}
	public Ticket getTicketItem() {
		return ticketItem;
	}
	public void setTicketItem(Ticket ticketItem) {
		this.ticketItem = ticketItem;
	}
	public List<Usuario> getLista_analistas_seleccionados() {
		return lista_analistas_seleccionados;
	}
	public void setLista_analistas_seleccionados(
			List<Usuario> lista_analistas_seleccionados) {
		this.lista_analistas_seleccionados = lista_analistas_seleccionados;
	}
	public static Logger getLogger() {
		return LOGGER;
	}
	public Usuario getDataItem() {
		return dataItem;
	}

	public void setDataItem(Usuario dataItem) {
		this.dataItem = dataItem;
	}
	
	
	
}
